package com.mybed.crm.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mybed.crm.pojo.dto.PageDeptDto;
import com.mybed.crm.pojo.dto.PageReportChannelDto;
import com.mybed.crm.pojo.dto.PageReportCluesDto;
import com.mybed.crm.pojo.dto.PageReportContractDto;
import com.mybed.crm.pojo.pojo.Contract;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mybed.crm.pojo.vo.ContractVo;
import com.mybed.crm.pojo.vo.PageCluesVo;
import com.mybed.crm.pojo.vo.PageDeptVo;
import com.mybed.crm.pojo.vo.PageReportChannelVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Wrapper;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 合同 Mapper 接口
 * </p>
 *
 * @author kt
 * @since 2024-10-26
 */
@Mapper
public interface ContractMapper extends BaseMapper<Contract> {

    // 合同统计
    List<Map<String, Object>> contractStatistics(String beginCreateTime, String endCreateTime);

    // 销售统计
    List<Map<String, Object>> salesStatistics(String beginCreateTime, String endCreateTime);

    // 渠道统计
    List<Map<String, Object>> chanelStatistics(String beginCreateTime, String endCreateTime);

    // 活动统计
    List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计的分页查询
     * @param page
     * @param wrapper
     * @param pageReportContractDto
     * @return
     */
    IPage<Contract> queryPageContract(IPage<Contract> page, Wrapper wrapper,@Param("prc") PageReportContractDto pageReportContractDto);
    //线索统计
    List<Map<String, Object>> cluesStatistics(String beginCreateTime, String endCreateTime);

    IPage<PageDeptVo> queryPageDept(IPage<PageDeptVo> page, Wrapper wrapper,@Param("pdd") PageDeptDto pageDeptDto);
    /**
     * 销售统计的分页查询
     * @param page
     * @param o
     * @param pageDeptDto
     * @return
     */
    IPage<PageDeptVo> queryPageDept(IPage<PageDeptVo> page, Object o,@Param("pdd") PageDeptDto pageDeptDto);

    IPage<PageCluesVo> queryPageClue(IPage<PageCluesVo> page,  Wrapper wrapper, @Param("prc") PageReportCluesDto pageReportCluesDto);
    /**
     * 线索统计的分页查询
     * @param page
     * @param o
     * @param pageReportCluesDto
     * @return
     */
    IPage<PageCluesVo> queryPageClue(IPage<PageCluesVo> page, Object o, @Param("prc") PageReportCluesDto pageReportCluesDto);

    /**
     * 渠道统计的分页查询
     * @param page
     * @param o
     * @param pageReportChannelDto
     * @return
     */
    IPage<PageReportChannelVo> queryPageActivity(IPage<PageReportChannelVo> page, Object o,@Param("prc") PageReportChannelDto pageReportChannelDto);


}
